package threadTea;

/**
 * 使用当前类演示多线程并发安全问题
 */
public class Bank01 {
    //账号余额
    private int account=20000;
    //取钱方法

    public  boolean getMoney(int money){
        //1查询账号余额
        int account = getAccount();
        //2判断余额是否足够
        if(account>=money){
            //3计算新的余额
            account = account-money;

            Thread.yield();//要求主动放弃本次剩余时间片(模拟CPU执行到这里时没有时间了)

            //4重新记账
            saveAccount(account);
            System.out.println("取款人"+Thread.currentThread().getName());
            return true;
        }
        //如果余额不足，则拒绝出钞
        return false;
    }

    //重新记账方法
    public void saveAccount(int account){
        this.account = account;
    }
    //查询余额方法
    public int getAccount(){
        return account;
    }
}
